/**
 * @Ref https://blog.csdn.net/qq_38157825/article/details/132673833
 * 特别注意，一个有趣的现象：
 *   - 每次启动服务器，服务器都会主动向客户端推送信息；
 *   - 并且这些推送的信息会追加到文本框后面（这是为何？）
 */
const koa = require('koa');
const router = require('koa-router')()

const {Typer} = require('./typer.cjs');
// const {Web} = require("./objects/web01.cjs");
const {Web} = require("./web/web02.cjs");


class Server {
    constructor() {
        const app = new koa();

        router
            .get('/', new Web(app).index)
            .get('/typing', this.typing);

        app
            .use(router.routes())
            .listen(3000, _ => {
            console.log('Server running on http://localhost:3000')
        });
    }

    typing = async ctx => {
        try {
            new Typer(ctx);
        } catch (error) {
            error.status = error.status ? error.status : 500
            ctx.throw(error.status, error)
        }
    }
}

new Server();
